package 
{
	import flash.display.DisplayObject;
	import assets.example.SendEmailView;

	import pl.medec.formmanager.FormManager;
	import pl.medec.formmanager.validators.EmailValidator;
	import pl.medec.formmanager.validators.StringValidator;
	import pl.medec.formmanager.validators.URLValidator;

	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;

	[SWF(backgroundColor="#000000", frameRate="24", width="780", height="480")]

	/**
	 * Przykladowe uzycie biblioteki FormManager
	 * @author Piotr Mederak
	 */
	public class FormManagerExample extends Sprite
	{
		private var formManager:FormManager;
		private var view:SendEmailView;

		public function FormManagerExample() 
		{
			init( );
		}

		private function init():void 
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			// tworzymy formularz
			// pobieram widok z SWC
			view = new SendEmailView( );
			this.addChild( view );
			
			// tworzymy instancje biblioteki
			// jedna instancja kontroluje jeden formularz
			formManager = new FormManager( );
			
			// Chcemy aby w pierwszym polu naszego formularza byl fokus,
			// tzn by znajdowal sie w nim odrazu kursor
			formManager.firstItemFocus = false;
			
			// rozpoczynamy dodawania pol
			
			// LINK do strony
			// pole opcjonalne
			formManager.addInputField( view.link.tf, URLValidator, false, true, null, 0xFF0000 );
			
			// EMAIL
			formManager.addInputField( view.emailInput.tf, EmailValidator, true, true, view.emailInput.exclamation );
			
			// TRESC
			formManager.addInputField( view.textInput.tf, StringValidator, true, true, view.textInput.exclamation );
			
			// PODPIS
			formManager.addInputField( view.signInput.tf, StringValidator, true, true, view.signInput.exclamation );
			
			// buttony sa dodawane opcjonalnie tylko wtedy gdy chcemy by mozna bylo po nich
			// sie przemieszczac za pomoca tabulatora
			formManager.addButton( view.btnBack );
			formManager.addButton( view.btnSend );
			
			view.btnSend.buttonMode = true;
			// za uruchomienie walidacji formularza nie odpowiada zaden tajemny przycisk
			// mozna ja podpiac pod jakokolwiek akcje - tutaj podpiete pod zwyklego
			// movieclipa
			view.btnSend.addEventListener( MouseEvent.CLICK, sendClickHandler, false, 0, true );
		}

		private function sendClickHandler( event:MouseEvent ):void 
		{
			// walidujemy
			var validResult:Vector.<DisplayObject> = formManager.validate();
			
			if(!validResult) 
			{
				trace( 'walidacje przeszlo pomyslnie' );
			}
			else 
			{
				// wylistowalo pola, ktore sa zle zwalidowane
				trace( formManager.badItems );
				trace( validResult );
				
			}
		}
	}
}
